﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Security.Cryptography;

namespace Aliyun.Oss
{
	/// <summary>
	/// 存储在OSS上的每个Object必须都包含在Bucket中，
	/// Bucket名在整个OSS中具有全局唯一性，且不能修改。
	/// 一个应用，例如图片分享网站，可以对应一个或多个Bucket。
	/// 一个用户最多可创建10个Bucket，
	/// 但每个Bucket中存放的Object的数量和大小总和没有限制
	/// 
	/// 只能包括小写字母，数字，下划线（_）和短横线（-）
	/// 必须以小写字母或者数字开头
	/// 长度必须在3-255字节之间
	/// 
	/// 全局唯一性
	/// 小写字母、数字、下划线和短横线
	/// 小写字母和数字开头
	/// 3-255
	/// </summary>
	public class Bucket
	{
		//public Owner Owner { get; set; }
		// BUCKET_REGEX = "^[a-z0-9][a-z0-9_\\-]{2,254}$"
		public string Name { get; set; }
		public DateTime CreationDate { get; set; }
		/// <summary>
		/// public-read-write：
		/// 任何人（包括匿名访问）都可以对该bucket中的object进行PUT，Get和Delete操作；
		/// 所有这些操作产生的费用由该bucket的创建者承担，请慎用该权限。
		/// 
		/// public-read：
		/// 只有该bucket的创建者可以对该bucket内的Object进行写操作（包括Put和Delete Object）；
		/// 任何人（包括匿名访问）可以对该bucket中的object进行读操作（Get Object）。
		/// 
		/// private：
		/// 只有该bucket的创建者可以对该bucket内的Object进行读写操作（包括Put、Delete和Get Object）；
		/// 其他人无法访问该Bucket内的Object。
		/// 
		/// 用户新创建一个新Bucket时，如果不指定Bucket权限，OSS会自动为该Bucket设置private权限。
		/// 对于一个已经存在的Bucket，只有它的创建者可以修改该Bucket的权限。
		/// 
		/// public-read-write
		/// public-read
		/// private (default)
		/// </summary>
		public string AccessControlList { get; set; }

		//public IEnumerable<OSSObject> Objects { get; set; }
	}
}
